package org.mq.mymq.nameserver.enums;

/**
 * @ClassName MasterSlaveReplicationTypeEnum
 * @Description 主从同步的复制模式
 * @Author jiarong_ye
 * @Date 2025/6/23 14:07
 * @Version 1.0
 */
public enum MasterSlaveReplicationTypeEnum {
    SYNC("sync", "同步复制"), // 客服端写入数据到master节点，数据发送到下游slave节点。slave节点数据存储后，返回写入成功信息，所有节点返回成功后，master再确认返回
    HALF_SYNC("half_sync", "半同步复制"),// 客服端写入数据到master节点，数据发送到下游slave节点。slave节点数据存储后，返回写入成功信息ack，超过半数节点返回ack，则master再确认返回
    ASYNC("async", "异步复制")// 客户端写入数据到master节点后，master开启一个异步线程发送同步数据给到slave，快速通知客户端写入成功。
    ;
    String code;
    String desc;

    MasterSlaveReplicationTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    public static MasterSlaveReplicationTypeEnum of(String code) {
        for (MasterSlaveReplicationTypeEnum value : MasterSlaveReplicationTypeEnum.values()) {
            if (value.code.equals(code)) {
                return value;
            }
        }
        return null;
    }
}
